package com.meng.utils.mybatis;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.HashMap;


/**
 * 分页参数工具类 (用于接收 分页时application/josn 传递的查询参数)
 *
 * 只用于分页接受的参数类型
 *
 * @author MENG
 * @version 2017/7/13
 * @see
 */
public class ParamMap<K, V> extends HashMap<K, V>
{
    private Logger logger = LoggerFactory.getLogger(ParamMap.class);

    private Page page;

    public Page getPage()
    {
        return page;
    }

    public void setPage(Page page)
    {
        this.page = page;
    }

    public ParamMap()
    {
        super();

        page = new Page();
    }

    /**
     * 重写父类put方法
     * @param key
     * @param value
     * @return
     */
    public V put(K key,V value)
    {
        if(key.equals("page"))
        {
            if("".equals(value))
            {
                logger.info("用了分页参数工具类，但没有传递Page大小");
            }
            else
            {
                try
                {
                    this.page.setCurrentPage(Integer.valueOf(value.toString()));
                }
                catch (Exception e)
                {
                    throw new RuntimeException("分页参数Page转Int失败!",e);
                }
            }
        }
        else if(key.equals("size"))
        {
            if("".equals(value))
            {
                logger.info("用了分页参数工具类，但没有传递Size大小");
            }
            else
            {
                try
                {
                    this.page.setShowCount(Integer.valueOf(value.toString()));
                }
                catch (Exception e)
                {
                    throw new RuntimeException("分页参数Size转Int失败!",e);
                }
            }
        }

        return super.put(key,value);
    }
}
